Improve HPET comparator reprog to prevent intr-near-missing case
authorKeir Fraser <keir.fraser@citrix.com>
Tue, 3 Jun 2008 08:41:19 +0000 (09:41 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Tue, 3 Jun 2008 08:41:19 +0000 (09:41 +0100)
commit5ede5271a48ce6d16e2c87de833d782b0061ed03
treee3e7e66e10a2f112957229fc957730c3e12232be
parent7534d30b438b3ab76967743bbb162e6b60dfe823
Improve HPET comparator reprog to prevent intr-near-missing case

HPET intr-near-missing means if the current counter value is too close
to the comparator value to be reprogrammed the expected HPET intr may
be missing. Linux kernel uses a mininal 48-hpet-ticks(~3.5us) distance
to workaround this, but personal observation showed there is still
failure case while delta=3D0xba (~13.5us). So choosing 20us as the
MIN_DELTA_NS should be helpful to prevent near-missing from happening.

local_irq_save/restore were used to avoid disturbance. (+ 2) was used
as a final guard to avoid wrong judgement due to the real happened
near-missing case.

Signed-off-by: Wei Gang <gang.wei@intel.com>
Signed-off-by: Tian Kevin <kevin.tian@intel.com>
xen/arch/x86/hpet.c